package controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


import com.mybatis.po.Userinfo;

import service.LoginService;

@CrossOrigin(originPatterns="*",allowCredentials="true")
@Controller
public class Login {
	
	@Autowired
	private LoginService loginservice;
	@RequestMapping("login")
	@ResponseBody
	public Map<String, Object> register(HttpSession session,@RequestBody Userinfo userinfo,HttpServletResponse response) {

		HashMap<String, Object> result = new HashMap<>();
		try {
			if(loginservice.right(userinfo)) {
				result.put("mess", "登录成功");
				session.setAttribute("Uid", userinfo.getId());
				
				session.setAttribute("Uname", loginservice.getname(userinfo.getId()));
				session.setAttribute("Upwd", userinfo.getPwd());
				session.setAttribute("Uidentity", userinfo.getIdentity());
				System.out.println(session.getAttribute("Uid"));
				
//				Cookie cookie=new Cookie("Uid",userinfo.getId());
//				response.addCookie(cookie);
				//因为跨域导致servlet无法接收sessionid，因此后续的业务中session无法找到
				//这里在登陆时返回给前端sessionid，并让前端在之后也请求中都带上这个sessionid，我们可以在后续业务中根据这个sessionid找到
				//存储用户信息的这个session，但这无法做到关闭浏览器后能保持登录状态，也就是说每次打开我们的网站都需要进行一次登录
				//这里我的思考是:这主要是前端无法保存后端中的sessionid导致的。
				//我的解决思路:让前端在一个有效时间内保存后端的sessionid，在每次打开页面时都发送这个sessionid。这就是cookie
				//但是我又发现cookie是不支持跨域请求的 ???不过我想我们可以做一个模拟cookie
				//不对思维错乱了，得先找前端沟通一下----
				result.put("sessionId", session.getId());
			}else {
				result.put("mess", "登录失败");
			}
			
		}catch(Exception e) {
			result.put("mess", "登录失败");
			System.out.print(e);
		}

		return result;
	}
}
